home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / Programming / BlitzList / BlitzListFiles / simple.lha / simple.asc next >
Encoding:
Text File  |  1998-07-01  |  3.0 KB  |  95 lines

  1. ;Simple super>fast>chip tester
  2. ;
  3. ;it's a bit flickery...me'thinks I've missed something with the smooth
  4. ;scroll thing...as it's the first time I've done soft scroll with this.
  5. ;
  6. ;it is also copying from the superbitmap everytime...which I don't think
  7. ;will always be nescerary.
  8. ;
  9. ;using this method, the edge 16 pixels of the superbitmap to the right
  10. ;and bottom...can't be shown, because the viewable area has a clip
  11. ;border, to clip any shapes you blit to it, and therefore, you need
  12. ;an extra shapewidth across, and shapeheight down, to make sure you can
  13. ;view the whole super bitmap. There are many ways other ways of doing it.
  14. ;
  15. ;You need to find out which is the best for your game. I won't be using
  16. ;this in mine, as mine has no map/smooth scroll.
  17. ;
  18. ; YOU need to have amigalibs.res resident, and bb2objtypes.res resident
  19. ; for this to work, and the fastgfx routines too.
  20. WBStartup:DEFTYPE.w
  21.  
  22. #FGFX_COMPACT=0
  23.  
  24. INCLUDE "FastGfx.bb2"
  25.  
  26. If InitFastShapes{1}=False Then End
  27. If MakeBitmap{3,1280,512,5,$10005}=False Then End ;get the super fast bitmap
  28. If MakeBitmap{2,368,272,5,$10005}=False Then End ;get fast bitmap
  29. If MakeBitmap{1,336,256,5,$10003}=False Then End ;screen buffer 1
  30. If MakeBitmap{0,336,256,5,$10003}=False Then End ;screen buffer 2
  31.  
  32. ;The bitmaps are 16 pixels wider than the screen so that smooth
  33. ;scrolling can be achived.
  34.  
  35. ;The fast bitmap has a border of 16 pixels around the main area, to save
  36. ;time bothering with clipping. We only copy what we can see to the
  37. ;chip mem bitmap.
  38.  
  39. LoadBitMap 3,"simple.iff",0
  40.  
  41. db=1 ; double buffer
  42.  
  43. rect.Rectangle\MinX=0,0,320,256
  44.  
  45. Dim scrtags.TagItem(20)
  46. scrtags(0)\ti_Tag=#SA_Width,336:scrtags(1)\ti_Tag=#SA_Height,256
  47. scrtags(2)\ti_Tag=#SA_Depth,5:scrtags(3)\ti_Tag=#SA_Type,$F
  48. scrtags(4)\ti_Tag=#SA_Quiet,True:scrtags(5)\ti_Tag=#SA_ShowTitle,False
  49. scrtags(6)\ti_Tag=#SA_BitMap,Addr BitMap(0):scrtags(7)\ti_Tag=#SA_DClip,&rect
  50. scrtags(8)\ti_Tag=#SA_Exclusive,True:scrtags(9)\ti_Tag=#SA_Draggable,False
  51. scrtags(10)\ti_Tag=#SA_AutoScroll,False:scrtags(11)\ti_Tag=#TAG_DONE,0
  52.  
  53. ScreenTags 0,"",&scrtags(0):*vp.ViewPort=ViewPort(0):Use Palette 0
  54.  
  55. x=0:y=0                         ;screen x and y positions for top left
  56. xdir=1:ydir=1                   ;random x and y directions
  57.  
  58. Repeat
  59.   ResetTimer
  60.   xalign=x&$FFF0       ;make xalign the even edge of the scroll
  61.   Gosub COPY_FROM_SUPERBITMAP
  62.   ;do stuff here...like sprites etc
  63.   Gosub DO_STUFF
  64.   ;now copy to a displayable bitmap
  65.   Gosub COPY_FROM_FASTBITMAP
  66.   ;now scroll the vport
  67.   *vp\DxOffset=-(x-xalign)
  68.   Select Ticks
  69.     Case 0:VWait 2
  70.     Case 1:VWait
  71.   End Select
  72.   ShowBitMap db:ScrollVPort_ *vp:db=1-db
  73. Until Joyb(0)<>0
  74.  
  75. End
  76.  
  77. COPY_FROM_SUPERBITMAP:
  78.   xoffset=xalign-16: If xoffset<0 Then xoffset=0
  79.   SetCpuBitmap{2}:SetCpuScrollBitmap{3}:CpuBlockScroll{xoffset,y,368,272,0,0}
  80. Return
  81.  
  82. COPY_FROM_FASTBITMAP:
  83.   SetCpuBitmap{db}:SetCpuScrollBitmap{2}:CpuBlockScroll{16,16,336,256,0,0}
  84. Return
  85.  
  86. DO_STUFF:
  87.   ;just example, scroll the screen about
  88.   x=x+xdir:y=y+ydir
  89.   If x<0 Then x=0:xdir=1
  90.   If x>892 Then x=892:xdir=-1
  91.   If y<0 Then y=0:ydir=1
  92.   If y>240 Then y=240:ydir=-1
  93. Return
  94.  
  95.